package org.ponly.cta4j.drawing.background;

import java.awt.Color;
import java.awt.Graphics2D;
import org.ponly.cta4j.drawing.color.ColorGenerator;
import org.ponly.cta4j.drawing.color.SingleColorGenerator;

/**
 * 背景色笔刷.
 * <p>
 * 使用给定的颜色绘制背景
 * </p>
 *
 * @author vacoor
 * @since 1.0
 */
public class ColorBackgroundBrush extends AbstractBackgroundBrush {
    // default color is white.
    private static final Color DEFAULT_COLOR = Color.WHITE;

    private ColorGenerator colorGenerator;

    /**
     * 创建一个默认的背景色笔刷.
     */
    public ColorBackgroundBrush() {
    }

    /**
     * 创建一个单一颜色背景笔刷.
     *
     * @param color 背景色
     */
    public ColorBackgroundBrush(final Color color) {
        this(new SingleColorGenerator(color));
    }

    /**
     * 创建一个使用颜色生成器生成背景色的笔刷.
     *
     * @param colorGenerator 颜色生成器
     */
    public ColorBackgroundBrush(final ColorGenerator colorGenerator) {
        this.colorGenerator = colorGenerator;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    protected void doDrawBackground(final Graphics2D g2d, final int width, final int height) {
        final Color color = null != colorGenerator ? colorGenerator.getColor() : null;

        g2d.setColor(color != null ? color : DEFAULT_COLOR);
        g2d.setBackground(color != null ? color : DEFAULT_COLOR);
        g2d.fillRect(0, 0, width, height);
    }

    /**
     * @return 获取当前笔刷所使用的 ColorGenerator
     */
    public ColorGenerator getColorGenerator() {
        return colorGenerator;
    }

    /**
     * 设置当前笔刷所使用的 ColorGenerator.
     *
     * @param colorGenerator 新的颜色生成器
     */
    public void setColorGenerator(final ColorGenerator colorGenerator) {
        this.colorGenerator = colorGenerator;
    }
}
